package com.nep.mainMenu.controller;

import com.nep.common.util.SceneSwitcherUtil;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.image.ImageView;
import javafx.scene.layout.VBox;

import java.net.URL;
import java.util.ResourceBundle;

/**
 * 主菜单控制器
 * 负责初始化主菜单界面并处理不同用户角色卡片的交互事件
 */
public class MainMenuViewController implements Initializable {

    // FXML注入的UI组件
    @FXML private VBox publicSupervisorCard;    // 公众监督员卡片容器
    @FXML private VBox gridManagerCard;         // 网格管理员卡片容器
    @FXML private VBox systemAdminCard;         // 系统管理员卡片容器

    @FXML private ImageView publicSupervisorIcon; // 公众监督员图标
    @FXML private ImageView gridManagerIcon;      // 网格管理员图标
    @FXML private ImageView systemAdminIcon;      // 系统管理员图标

    @FXML private Label publicSupervisorLabel;    // 公众监督员标签
    @FXML private Label gridManagerLabel;         // 网格管理员标签
    @FXML private Label systemAdminLabel;         // 系统管理员标签


    /**
     * 初始化方法，在FXMLLoader加载界面后自动调用
     * 设置卡片的视觉效果和交互行为
     */
    @Override
    public void initialize(URL location, ResourceBundle resources) {
        setupCardEffects();
        // 事件处理已通过FXML中的onMouseClicked属性设置
    }

    /**
     * 设置所有角色卡片的悬停效果
     * 包括鼠标进入和离开时的样式变化
     */
    private void setupCardEffects() {
        // 为每种角色卡片应用统一的悬停效果
        setupHoverEffect(publicSupervisorCard);
        setupHoverEffect(gridManagerCard);
        setupHoverEffect(systemAdminCard);
    }

    /**
     * 设置单个卡片的悬停效果
     * @param card 需要设置效果的卡片容器
     */
    private void setupHoverEffect(VBox card) {
        // 鼠标进入时的样式：亮蓝色背景和阴影增强
        card.setOnMouseEntered(e -> {
            card.setStyle("-fx-background-color: #f0f8ff; -fx-effect: dropshadow(gaussian, rgba(0,123,255,0.5), 10, 0, 0, 5);");
        });
        // 鼠标离开时的样式：恢复白色背景和默认阴影
        card.setOnMouseExited(e -> {
            card.setStyle("-fx-background-color: white; -fx-effect: dropshadow(gaussian, rgba(0,0,0,0.15), 5, 0, 0, 3);");
        });
    }

    /**
     * 处理公众监督员卡片点击事件
     * 导航到公众监督员登录页面
     */
    @FXML
    private void handleSupervisorCardClick() {
        SceneSwitcherUtil.switchScene(publicSupervisorCard,
                "/com/nep/NEPS/view/SupervisorLoginView.fxml");
    }

    /**
     * 处理网格管理员卡片点击事件
     * 导航到网格管理员相关页面
     */
    @FXML
    private void handleGridManagerCardClick(){
        SceneSwitcherUtil.switchScene(gridManagerCard,
                "/com/nep/NEPG/view/LoginView.fxml");
    }

    /**
     * 处理系统管理员卡片点击事件
     * 导航到系统管理员登录页面
     */
    @FXML
    private void handleSystemAdminCardClick() {
        SceneSwitcherUtil.switchScene(systemAdminCard,
                "/com/nep/NEPM/view/AdminLoginView.fxml");
    }
}